define print_info
	tput bold && tput setaf 2 && echo $1
	tput sgr0
endef

define print_help
	tput setaf 4 && printf "%-30s - %s\n" $1 $2
	tput sgr0
endef

define uniq =
$(eval out :=) \
$(foreach _, $1, $(if $(filter $_, $(out)),,$(eval out += $_))) \
$(out)
endef

# for some reason this filter works differently than repasting it 
# directly into rule
define filter_file =
$(foreach _, $2, $(if $(findstring $1, $(notdir $_)), $_))
endef